package com.way.demo.test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * @author lipingwei
 * @create 2023-08-26 20:08
 */
public class ArrayAndListMain {
    public static void main(String[] args) {
        /*
           集合转数组

         */
        List<String> ls = new ArrayList<>();
        ls.add("zhangsan");
        ls.add("lisi");
        ls.add("zhaoliu");


        /**
         * 无参构造；list.toArray();返回objects[];
         */
        Object[] objects = ls.toArray();
        //转为string数组
        /**
         * Object[] 转化为String[]; 类型转换
         * String[] strs= Arrays.copyOf(src,len,String[].class);
         * src: 源数组
         * len:源数组大小
         * String[].class :要转化的数组类型
         */
        String[] strArray = Arrays.copyOf(objects, objects.length, String[].class);
       // System.out.println(Arrays.toString(strArray));

        /**
         * 有参构造：新创建一个String类型的数组；数组的大小为集合的大小；list.toArray();
         */
        String[] strs = new String[ls.size()];
        ls.toArray(strs);
       // System.out.println(Arrays.toString(strs));

        //==============================

        /**
         * 数组 转 集合 ；
         * 1. 遍历数组：将数组中的元素全部添加到新建的数组中
         * 2. Arrays.asList(数组) ： 返回的list 的大小不可改变
         */

        /*
          notes: java 中数组的定义：
             int[] array={1,2,3,4};
             int[] array = new int[]{1,2,3,4};
             int[] array=new int[4];
             java 中标准的 数组定义是 int[] 在一起，变量在后；
             c 语言中 int array[]; 在后；
             Java 语言的数组定义更为规范，int[] 在一起是变量的类型；
         */

        int array [] ={1,2}; //c语言中的数组定义
        int[] array2={1,2,3}; //Java 中的数组定义
     //   System.out.println(Arrays.toString(array2));

        /**
         * 定义的错误形式：
         * int[] array;
         * array={1,2,3};  只允许写在一起的初始化
         *
         */

        /**
         * 数组转为集合；
         */



    }

}
